package com.example.springboot_sdse_air.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.springboot_sdse_air.entity.ChatMessage;
import com.example.springboot_sdse_air.entity.ChatSession;

import java.util.List;

/**
 * 聊天服务接口
 * 功能：处理聊天会话和消息的数据库操作
 * 作者：王彬 202200111149
 * 日期：2025-01-14
 */
public interface ChatService extends IService<ChatSession> {

    /**
     * 创建新的聊天会话
     * @param uid 用户ID
     * @param title 会话标题
     * @param pdfId PDF文件ID
     * @return 会话ID
     */
    Integer createChatSession(Integer uid, String title, Integer pdfId);

    /**
     * 保存聊天消息
     * @param chatId 会话ID
     * @param sender 发送者 ("user" 或 "ai")
     * @param message 消息内容
     * @return 消息ID
     */
    Integer saveChatMessage(Integer chatId, String sender, String message);

    /**
     * 获取会话的所有消息
     * @param chatId 会话ID
     * @return 消息列表
     */
    List<ChatMessage> getChatMessages(Integer chatId);

    /**
     * 获取用户的所有会话
     * @param uid 用户ID
     * @return 会话列表
     */
    List<ChatSession> getUserChatSessions(Integer uid);

    /**
     * 获取用户在指定PDF下的最新活跃会话
     * @param uid 用户ID
     * @param pdfId PDF文件ID
     * @return 会话对象，如果没有则返回null
     */
    ChatSession getLatestActiveSessionByPdf(Integer uid, Integer pdfId);

    /**
     * 更新会话状态
     * @param chatId 会话ID
     * @param state 状态
     */
    void updateChatSessionState(Integer chatId, String state);
} 